Server Communication
Server Communication
Q1 處理長耗時的 AI 生成請求
題目描述: 使用者點擊「生成圖片」按鈕。請寫一段 Pseudocode,發送請求給 Server,並等待任務完成。Server 不會馬上回傳圖片,而是回傳一個 job_id。你需要定期檢查該 job_id 的狀態,直到狀態變為 COMPLETED。
Keypoint
策略: AI 生成通常需要幾秒鐘甚至更久,App 不可能一直開著連線等 (Timeout)。
核心模式: Polling (輪詢)。
流程: Client 請求生成 -> Server 回傳 Job ID -> Client 每隔 2 秒問一次 Job ID 完成沒 -> Server 回傳完成 + 圖片。
關鍵字: Async/Await、Sleep、Retry Limit (避免無限迴圈)。
A1
FUNCTION GenerateImageAsync(prompt_text)
// 1. start the job
api_url = "/api/generate"
payload = {"prompt": prompt_text}
response = HTTP_POST(api_url, payload)
IF response.status_code != 200 THEN
RETURN ERROR("Start Failed")
END IF
job_id = response.body.job_id
status = "Pending"
retry_count = 0
max_retries = 30 // every 2 second try again, total 1 second
// 2. Polling Loop
WHILE status != "Complete" AND retry_count <= max_retries DO
// wait 2 second before request
WAIT(2 second)
//check status
status_response = HTTP_GET("/api/jobs" + job_id)
status = status_response.body.job_id
IF status == "Complete" THEN
RETURN status_response.body.image_url
ELSE IF status == "Failed" THEN
RETURN Error("Generation failed")
END IF
retry_count += 1
END WHILE
RETURN Error("Timeout: Generation took too long")
END FUNCTIONServer Communication
https://z-hwa.github.io/webHome/[object Object]/Interview/Server-Communication/